package com.example.serviceorder.feign;

import com.example.serviceorder.config.WeatherFeignConfig;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestHeader;
import org.springframework.web.bind.annotation.RequestParam;

import java.util.Map;

// 测试使用OpenFeign访问第三方API。这里省略。
@FeignClient(
        name = "weather-client",
        url = "https://getweather.market.alicloudapi.com",  // API 地址
        configuration = WeatherFeignConfig.class  // 指定配置
)
public interface WeatherFeignClient {

    @GetMapping("/lundear/weather7d")
    String getWeather(
            @RequestHeader("Authorization") String authorization,  // 认证头
            @RequestParam Map<String, String> queryParams         // 查询参数
    );

    // 可以写两个@GetMapping的value一样。不像springmvc那样，springmvc要求重复是因为，springmvc是通过请求路径找方法的，如果有路径能匹配多个方法，那么就歧义了。但是openfeign是通过方法，找路径的，所以只要能找到方法，方法上面一定就只有一个路径，所以就算你一个多个方法用一样的路径，你找到方法方法是没有歧义的，那么路径就能找到，找到路径，就知道发什么样的请求了。
    @GetMapping("/lundear/weather7d")
    String getWeatherReqInter(
            @RequestParam Map<String, String> queryParams         // 查询参数
    );
}
